/*
 * 逻辑运算符，对两个boolean类型数据之间计算，结果也是Boolean类型
 * &：见到false即为false 否则为true
 * |：见到true即为true 否则为false
 * ^：两侧一样为false 不同则为true
 * !：去反
 * &&：前边为false 不运行另一边 前边为true 运行另一边
 * ||：前边为true 不运行另一边 前边为false 运行另一边
 * */

public class Logic {
    public static void main(String[] args) {
        System.out.println(true ^ true); // false
        System.out.println(true ^ false); // true

        int i = 4;
        System.out.println(false && i++ > 5);
        System.out.println(i);  // 4

        System.out.println(true && i++ > 5);
        System.out.println(i);  // 5

        int b = 4;

        System.out.println(true || b++ > 5);
        System.out.println(b);  // 4

        System.out.println(false || b++ > 5);
        System.out.println(b);  // 5


        /*
         * 下面两个列子证明| 和 & 两边都执行，和|| && 不一样
         * */
        int c = 1;
        System.out.println(true | c++ > 5);
        System.out.println(c);  // 2

        int d = 1;
        System.out.println(false | d++ > 5);
        System.out.println(d);  // 2

    }
}